package com.mornd.gulimall.ware.mapper;

import com.mornd.gulimall.ware.entity.WareSku;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 商品库存 Mapper 接口
 * </p>
 *
 * @author mornd
 * @since 2023-07-29
 */
@Mapper
public interface WareSkuMapper extends BaseMapper<WareSku> {

    Long getSkuStock(Long skuId);

    /**
     * 获取哪些数据是可以被锁定
     * @param skuId
     * @param count
     * @return
     */
    List<WareSku> getLockableStock(@Param("skuId") Long skuId, @Param("count") Integer count);

    /**
     * 根据id锁定库存
     * @param id
     * @param skuId
     * @param count
     * @return
     */
    int lockSkuStockById(@Param("id") Long id, @Param("skuId") Long skuId, @Param("count") Integer count);

    int lockSkuStock(@Param("skuId") Long skuId, @Param("count") Integer count);

    int unlock(@Param("wareSkuId") Long wareSkuId, @Param("count") Integer count);
}
